PARAMETERS v_variable TYPE table-champs.
	
	
	SELECT-OPTIONS: v_date FOR mara-ersda DEFAULT '20010101' TO '20011231'.
	
	
	SELECT-OPTIONS: v_variable FOR table-champs.
	
	
	
	PARAMETERS rb_01 RADIOBUTTON GROUP rb_0 DEFAULT 'X' USER-COMMAND ucomm. 
	PARAMETERS rb_02 RADIOBUTTON GROUP rb_0.
	
	
	
	Ils ont aussi un nom de variable pour définir si leur état est 'X' ou ' '.
	
	
	
	
	SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
	SELECTION-SCREEN END OF SCREEN 100.
	
	SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
	SELECTION-SCREEN END OF SCREEN 200.
	
	SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
	SELECTION-SCREEN END OF SCREEN 300.
	
	
	SELECTION-SCREEN: BEGIN OF TABBED BLOCK vb_onglets FOR 30 LINES,
    TAB (20) tab0 USER-COMMAND ucomm_1 DEFAULT SCREEN 100,
    TAB (20) tab1 USER-COMMAND ucomm_2 DEFAULT SCREEN 200,
    TAB (20) tab2 USER-COMMAND ucomm_3 DEFAULT SCREEN 300,
	END OF BLOCK vb_onglets.
	
	
	
	
	
	- Il permet d'afficher sous forme de tableau des données
	- Il peut aussi les trier et les organiser.
	
	TRY.
	  cl_salv_table=>factory( IMPORTING r_salv_table  = DATA(lo_alv)
							  CHANGING  t_table       = lt_mara ). 
	
	  lo_alv->get_functions( )->set_all( abap_true ).
	
	  DATA(lo_layout) = lo_alv->get_layout( ).
	
	  lo_layout->set_key( VALUE salv_s_layout_key( report = sy-repid ) ).
	  lo_layout->set_default( abap_true ).
	  lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
	  lo_alv->display( ).
	
	  CATCH cx_salv_msg.
	  CATCH cx_salv_not_found.
	ENDTRY.
	
	
	
	
	
	TABLES: mara.
	
	
	TYPES: BEGIN OF ty_mara,
			 nom  TYPE aenam,
			 date TYPE ersda,
		   END OF ty_mara.
	
	
	DATA: lt_mara TYPE TABLE OF ty_mara,
		  ls_mara TYPE ty_mara.
	
	
	SELECT-OPTIONS: v_date FOR mara-ersda.
	SELECT-OPTIONS: v_nom  FOR mara-aenam.
	
	
	SELECT FROM mara 
	  FIELDS aenam, ersda 
	  WHERE ersda IN @v_date "AAAAMMJJ
          AND   aenam IN @v_nom 
	  INTO TABLE @lt_mara. 
	
	
	LOOP AT lt_mara INTO ls_mara.
	  WRITE: / ls_mara-nom, '--', ls_mara-date.
	ENDLOOP.
	
	
	
	
	
	SELECT from mara
	
  	FIELDS mandt,
	
               matnr,
        
	        ernam,
        
	        mtart
	
  	into table @data(lt_mara).
	
	
	LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(
	WRITE: /, 
	ENDLOOP.
	
	
	
	
	
	TABLES: mara, bkpf.
	
	SELECT a~aenam,
       a~ersda,
       b~bukrs
    INTO TABLE @lt_table
    FROM mara AS a
    INNER JOIN bkpf AS b 
    ON a~ersda = b~bldat
    WHERE a~ersda In @v_date
		AND a~aenam In @v_nom.
	
	
	
	
	
	SORT lt_mara by date.
	
	
	
	
	
	TABLES: mara.
	
	
	TYPES: BEGIN OF ty_mara,
	         date    TYPE ersda,
	         nom     TYPE aenam,
	         matiere TYPE wrkst,
	       END OF ty_mara.
	
	
	DATA: lt_mara TYPE TABLE OF ty_mara,
	      ls_mara TYPE ty_mara.
	
	
	SELECT-OPTIONS: v_date FOR mara-ersda.
	SELECT-OPTIONS: v_nom FOR mara-aenam.
	
	
	SELECT FROM mara 
	  FIELDS aenam, ersda 
	  WHERE ersda IN @v_date "AAAAMMJJ
          AND   aenam IN @v_nom 
	  INTO TABLE @lt_mara. 
	
	LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(
	
	
	AT NEW date.
    	WRITE: /, 
  	ENDAT.
	
	
	AT END OF date.
    	WRITE: /, '------------------', /.
  	ENDAT.
	ENDLOOP.
	
	
	
	
	
	DATA: variable_1 TYPE i,
		  variable_2 TYPE i,
		  variable_3 TYPE i.
	
	
	
		Elle va de paire avec l'instruction 'GET REFERENCE OF' qui permet de renseigner la case mémoire d'une variable.
	
	
	DATA: lo_variable_1 TYPE REF TO i.
	DATA: lo_variable_2 TYPE REF TO i.
	DATA: lo_variable_3 TYPE REF TO i.
	
	
	
	GET REFERENCE OF variable_2 INTO lo_variable_2.
	GET REFERENCE OF variable_3 INTO lo_variable_3.
	
	
	
	
	x = variable_1.
	
	
	
	
	x = lo_variable_1->*.
	
	
	
	
	lo_variable_1->* = lo_variable_2->*.
	
	
	--------------------------------------------------------------------------------------------------------
	
	
	
	
	* Déclaration des variables
	* ###############################################
	
		  variable_2 TYPE i,
		  variable_3 TYPE i,
		  increment  TYPE i.
	
	DATA: it_table TYPE TABLE OF REF TO i."data.
	
	DATA: lo_variable_1 TYPE REF TO i.
	DATA: lo_variable_2 TYPE REF TO i.
	DATA: lo_variable_3 TYPE REF TO i.
	
	
	* Asignation des emplacements de variables
	* ###############################################
	
	GET REFERENCE OF variable_2 INTO lo_variable_2.
	GET REFERENCE OF variable_3 INTO lo_variable_3.
	
	variable_1 = 1.
	variable_2 = 2.
	variable_3 = 3.
	
	
	APPEND lo_variable_1 TO it_table.
	APPEND lo_variable_2 TO it_table.
	APPEND lo_variable_3 TO it_table.
	
	
	* Code principale
	* ###############################################
	
	
	
	lo_variable_1->* = lo_variable_2->*.
	
	PERFORM afficher.
	
	
	increment = 1.
	DO 2 TIMES.
	  TRY.
		  lo_variable_1 = it_table[ increment ].  
		  lo_variable_1->* = lo_variable_3->*.    
		
		CATCH cx_sy_itab_line_not_found.
		  WRITE 'erreur'.
	  ENDTRY.
	
	  increment = increment + 1.
	ENDDO.
	
	PERFORM afficher.
	
	
	FORM afficher.
	  WRITE: / |variable_1 = { variable_1 }|,
			 / |variable_2 = { variable_2 }|,
			 / |variable_3 = { variable_3 }|,
			 / 'â'.
	ENDFORM.
	
	
	
	variable_1 = 1
	variable_2 = 2
	variable_3 = 3
	
	variable_1 = 2
	variable_2 = 2
	variable_3 = 3
	
	variable_1 = 3
	variable_2 = 3
	variable_3 = 3
	
	
	
	
	DATA:
      variable_final(70)  TYPE c,
      v_date(20)          TYPE c,
      v_nom(20)           TYPE c,
      v_age               TYPE i.
	
	variable_final = space. 
	v_date = '31 Janvier 2024'.
	v_nom  = 'Joël'.
	v_age  = '22'.
	
	
	variable_final = |Le { v_date } { v_nom } Ă  { v_age } ans.|. 
	
	WRITE variable_final.
	
	
	
	
	
	
	
	LOOP AT lt_mara INTO ls_mara.
	ls_mara-nom = ''.
	MODIFY lt_mara FROM ls_mara TRANSPORTING nom.
	ENDLOOP.
	
	
	
	ls_mara-nom = ''.
	MODIFY lt_mara FROM ls_mara TRANSPORTING nom WHERE nom IS NOT INITIAL.
	
	
	
	LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(
  	
	ENDLOOP.
	
	
	
	
	DATA: w_name  TYPE string VALUE `Valeur 1`,
	w_index TYPE i      VALUE 1.
	
	FIELD-SYMBOLS <fs_test> TYPE any. 
	
	ASSIGN w_name TO <fs_test>.       
	PERFORM afficher.
	
	<fs_test> = 'Valeur 2'.           
	PERFORM afficher.
	
	ASSIGN w_index TO <fs_test>.      
	PERFORM afficher.
	
	ADD 1 TO <fs_test>.               
	PERFORM afficher.
	
	
	
	FORM afficher.
	  WRITE: <fs_test>, /.
	ENDFORM.